import axios from 'axios'
import { Message } from 'element-ui'

// 创建axios实例
const service = axios.create({
    baseURL: '/api', // 使用代理
    timeout: 10000 // 请求超时时间
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        return config
    },
    error => {
        console.error(error)
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data

        // 如果是文件下载，直接返回
        if (response.config.responseType === 'blob' || response.config.responseType === 'arraybuffer') {
            return response
        }

        // 根据后端返回的状态码进行处理
        if (res.code !== 200) {
            Message({
                message: res.message || '请求失败',
                type: 'error',
                duration: 5 * 1000
            })
            return Promise.reject(new Error(res.message || '请求失败'))
        } else {
            return res
        }
    },
    error => {
        console.error('请求错误', error)
        Message({
            message: error.message || '请求失败',
            type: 'error',
            duration: 5 * 1000
        })
        return Promise.reject(error)
    }
)

export default service 